<?php
// +----------------------------------------------------------------------
// |     【FabricColor】Model模型类
// +----------------------------------------------------------------------

declare (strict_types = 1);

namespace app\common\model;

use think\facade\Db;
use think\Model;
use think\model\concern\SoftDelete;

class FabricColor extends Model{
     use SoftDelete;
     protected $deleteTime = false;
     
     protected static $prefix;
 
     public function __construct(array $data = []){
         parent::__construct($data);
         self::$prefix = env('database.prefix'); // 获取表名前缀
     }
 
     /**
      * 获取列表
      */
    public static function getList($where = []){
        $limit = input('get.limit/d', 10); // 默认每页 10 条

        // 按色号查找
        if ($color_code = input("color_code")) {
         $where[] = ["color_code", "=", $color_code];
        }

        // 按渠道编号查找
        if ($sup_code = input("sup_code")) {
         $where[] = ["main.sup_code", "=", $sup_code];
        }

        // 按渠道色号查找
        if ($sup_color = input("sup_color")) {
         $where[] = ["sup_color", "=", $sup_color];
        }

        // 按面料ID查找
        if ($fabric_id = input("fabric_id")) {
            $where[] = ["fabric_id", "=", $fabric_id];
        }
        
        // 按面料编号查找
        if ($fabric_code = input("fabric_code")) {
            $where[] = ["fabric.fabric_code", "=", $fabric_code];
        }

        $list = self::alias('main')
         // 关联面料表
         ->join(self::$prefix . 'fabric_main fabric', 'main.fabric_id = fabric.id')
         // 关联渠道商表
         ->join(self::$prefix . 'supplier_main supplier', 'main.sup_id = supplier.id')
         // 按条件查询
         ->where($where)
         // 指定字段
         ->field('main.*, fabric.fabric_code, fabric.fabric_name, supplier.sup_name')
         // 排序
         ->order([
             'main.fabric_id' => 'desc',
             'main.sort' => 'asc',
             'main.color_code' => 'asc',
             'main.id' => 'desc'
         ])
         // 分页
         ->paginate($limit);

        return [
            'code' => 0,
            'data' => $list->items(),
            'extend' => [
             'count' => $list->total(),
             'limit' => $limit
            ]
        ];
    }

	/**
	 * 获取列表数据（支持并表查询）
	 *
	 * @param array  $where  查询条件
	 * @param string $order  排序规则
	 * @param int    $n_page 当前页码
	 * @param int    $limit  每页条数
	 * @return array
	 */
	public static function listData($where = [], $order = "", $n_page = 0, $limit = 20)
	{
	    // 基础查询
	    $query = self::alias('main')
	        // 关联面料表
	        ->join(self::$prefix . 'fabric_main fabric', 'main.fabric_id = fabric.id')
	        // 关联渠道商表
	        ->join(self::$prefix . 'supplier_main supplier', 'main.sup_id = supplier.id')
	        // 按条件查询
	        ->where($where)
	        // 指定字段
	        ->field('main.*, fabric.fabric_code, fabric.fabric_name, supplier.sup_name');
	
	    // 排序
	    if (!empty($order)) {
	        $query->order($order);
	    }
	
	    // 分页
	    if ($n_page > 0) {
	        $query->page($n_page, $limit);
	    }
	
	    // 执行查询并返回结果
	    $data = $query->select()->toArray();
	
	    return $data;
	}
	
	// 获取某个单条记录
	public static function info($id){
		if(!is_array($id)){
			$model=self::find($id);
		}else{
			$model=self::where($id)->find();
		}
		return $model;		
	}
	
	/** 获取器 **/
	
}
